<?php
/**
 * 路由器处理类
 *
 * @author fakis738@gmail.com
 * @link http://www.woophp.com/manual/class/router.lib.php
 * @version $id router.lib.php v0.1 2011-12-03$
 */
class Router_lib
{
    //设置路由模式，可选3种模式：domain|rewrite|normal
    protected $mode = 'rewrite';

    var $domain = '';
    var $visit  = 'www';

    public function __construct($config=NULL)
    {
    }
    
    /**
     * 初始化路由
     * @return void
     */
    public function init()
    {
        $this->getDomain();
        $this->getVisit();

    	if(preg_match("/^\/index\.?(^[html])?\??$/i", $_SERVER['REQUEST_URI']) || preg_match("#^/\??$#", $_SERVER['REQUEST_URI'])){
			WS::redirect('/index.html', 301);
        }
    
        if(preg_match("#\.php\?#i", $_SERVER['REQUEST_URI'])){
        	$router_mode = 'normal';
        }elseif(preg_match("#\?#", $_SERVER['REQUEST_URI'])){
        	$router_mode = 'api';
        }else{
        	$router_mode = array('api', 'smart');
        }
    }

    /**
     * 取得访问域名
     * @return void
     */
    public function getDomain()
    {
        if(preg_match_all('#([\w|-]+\.(com|net|org|cn|com\.cn)+)$#i', $_SERVER['HTTP_HOST'], $m))
        {
            $this->domain = strtolower($m[1][0]);
        }
        else
        {
            WS::ERR('访问域名错误');
        }
    }

    /**
     * 取得访问接口
     * @return void
     */
    public function getVisit()
    {
        $sld = array('www', 'pic', 'static', 'manual', 'help', 'api', 'admin', 'root');

        switch(strtolower($this->mode))
        {
        case 'domain':
            //匹配二级域名访问方式
            if(preg_match_all('#^('. implode('|', $sld). ')\.#i', $_SERVER['HTTP_HOST'], $m))
            {
                $visit = $m[1][0];
            }
            break;
        case 'rewrite':
            //匹配rewrite访问方式
            if(preg_match_all('#^/('. implode('|', $sld). ')(/.*)?$#i', $_SERVER['REQUEST_URI'], $m))
            {
                $visit = $m[1][0];
            }
            break;
        default:
            //匹配normal默认方式
            $visit = isset($_GET['visit']) ? $_GET['visit'] : '';
            $visit = in_array(strtolower($visit), $sld) ? $visit : '';
        }

        $visit = empty($visit) ? 'www' : $visit;
        $this->visit = strtolower($visit);
    }
}
